package fr.jee.web.bean.administration.utilisateur;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import fr.jee.ejb.facade.UtilisateurFacade;
import fr.jee.ejb.model.Utilisateur;
import fr.jee.ejb.outils.enumeration.TypeModificationEnum;
import fr.jee.web.outils.JsfUtils;

@Named
@ViewScoped
public class AdministrationUtilisateurBean implements Serializable {

	@Inject
	private UtilisateurFacade utilisateurFacade;
	private List<Utilisateur> listeUtilisateur = new ArrayList();
	private Utilisateur utilisateur;
	private TypeModificationEnum typeModification;

	public AdministrationUtilisateurBean() {
	}

	@PostConstruct
	private void initialisation() {
		rechercher();
	}

	private void rechercher() {
		listeUtilisateur = utilisateurFacade.findAll();
	}

	public void initNouvelUtilisateur() {
		utilisateur = new Utilisateur();
		typeModification = TypeModificationEnum.creation;
		JsfUtils.afficherDialog("_dialogModificationUtilisateur");
	}

	public void selectionUtilisateur() {
		typeModification = TypeModificationEnum.modification;
		JsfUtils.afficherDialog("_dialogModificationUtilisateur");
	}

	public void valider() {
		utilisateur = utilisateurFacade.editerUtilisateur(utilisateur, typeModification);
		JsfUtils.ajoutMessageInfo("L'utilisateur a bien été éditée");
		rechercher();
		JsfUtils.cacherDialog("_dialogModificationUtilisateur");
	}

	public List<Utilisateur> getListeUtilisateur() {
		return listeUtilisateur;
	}

	public void setListeUtilisateur(List<Utilisateur> listeUtilisateur) {
		this.listeUtilisateur = listeUtilisateur;
	}

	public Utilisateur getUtilisateur() {
		return utilisateur;
	}

	public void setUtilisateur(Utilisateur utilisateur) {
		this.utilisateur = utilisateur;
	}

	public TypeModificationEnum getTypeModification() {
		return typeModification;
	}

	public void setTypeModification(TypeModificationEnum typeModification) {
		this.typeModification = typeModification;
	}

}
